با این خطای Runtime Error 1004 در VBA چکار کنیم ؟
سلام به سافت پلاس و یکی دیگر از آموزش های برنامه نویسی وی بی ای به زبان ساده خوش آمدید . موضوع آموزش امروز ما در مورد خطای Runtime Error 1004 است .
می خواهیم با مفهوم این خطا آشنا شویم و ببینیم که چرا این خطا رخ می دهد و بعد از رخ دادن این خطا توی برنامه نویسی وی بی ای در اکسل چه کاری باید برای رفع آن انجام بدهیم .
من علیرضا شهرآئینی هستم و اگر تا انتهای این مطلب من را همراهی کنید همه آنچه را که در مورد این خطا نیاز است که بدانید را در اختیار شما قرار می دهم .
Runtime Error 1004 چه خطایی است ؟
قبل از اینکه بخواهیم مستقیم به سراغ خطای Runtime Error 1004 برویم اجازه بدهید یک بررسی در مورد خود مفهوم خطا در برنامه نویسی وی بی ای داشته باشیم .
اول ببینیم منظور از کلمه خطا در برنامه نویسی وی بی ای چیست و به چه چیزی خطا می گوییم ؟
خطا یا ERROR یک مفهومی است که توی برنامه نویسی وی بی ای – و البته همه زبان های برنامه نویسی دیگر – خیلی با آن سرو کار داریم .
اول بیایید یک تعریفی از واژه ارور یا همان خطا داشته باشیم تا بعد برویم به سر وقت خطای 1004 در برنامه نویسی وی بی ای .
طبق تعریفی که در سایت ویکی پدیا از واژه ERROR آمده هر چیزی که در حین اجرای کدها ما ایجاد اختلال کند یا در نتیجه نهایی حاصل از اجرای کدهای ما تغییر ایجاد کند را ما به نام ERROR می شناسیم .
توی برنامه نویسی برای اینکه بهتر بتوانیم خطاها را مطالعه و آنها را مدیریت بکنیم معمولا یک سری تقسیم بندی ها را برای انواع خطاها در نظر می گیریم .
اینجا دیگر قرار نیست راجع به انواع خطاها در برنامه نویسی وی بی ای صحبت کنیم چون در باره انواع خطاها هم توی دوره جامع و کامل برنامه نویسی VBA در اکسل در یک فصل مجزا راجع به خطا و خطایابی مفصل صحبت کرده ام و هم توی مطلب روش های خطایابی کدهای VBA در اکسل .
اگر تازه وارد دنیای برنامه نویسی وی بی ای شده اید توصیه می کنم که حتما مطلب مربوط به لینک بالا را مطالعه کنید چون دید خیلی خوبی از مبحث خطاها در برنامه نویسی به شما می دهد .
حالا برویم به سراغ خطای مورد نظر خودمان یعنی خطای 1004 در برنامه نویسی VBA .
خطای 1004 چه شکل و شمایلی دارد ؟
اول بیایید یک نگاهی به شکل ظاهری این خطا بیندازیم .
این خطا همیشه در قالب یک کادر مثل تصویر بالا نمایش داده می شود . این کادر سه تا بخش مهم دارد .
بخش اول که همیشه ثابت است و عبارت : ‘Run-time error ‘ 1004 در بالای این کادر قرار می گیرد .
از این عبارت می شود متوجه شد که خطای 1004 از نوع خطای Run time است .
توی قسمت دوم هم که یک عبارت وجود دارد که علت بروز خطا را توضیح می دهد . بسته به اینکه علت بروز این خطا چه باشد این بخش تغییر می کند . بعدا با این قسمت بیشتر کار خواهیم داشت .
بخش سوم هم دکمه های کنترلی هستند که با استفاده از آنها می توانیم کار مدیریت خطا را انجام بدهیم . در ادامه در مورد کاربرد هر کدام از این دکمه ها هم صحبت خواهیم کرد .
مطلب پیشنهادی :چه جوری با کدهای VBA فایل اکسل را ذخیره کنیم ؟
اصلاً چرا خطای 1004 اتفاق می افتد ؟
در یک کلمه بگویم که 6 تا دلیل وجود دارد که بواسطه هر کدام از آنها ممکن است که شما با خطای Runtime Error 1004 روبرو شوید .
در ادامه با همه این 6 تا دلیل آشنا شده و یاد خواهید گرفت که هر کدام از آنها را چطور برطرف کنید .
دلیل شماره 1: استفاده از یک اسم تکراری
این دلیل خیلی ساده است . وقتی که شما از اکسل می خواهید به یک شی اسمی را اختصاص بدهد که از قبل آن اسم را برای شی دیگری استفاده کرده است با این خطا مواجه می شوید .
می پرسید چطور. این ویدئوی کوتاه زیر را ببینید تا بهتر راجع به آن توضیح بدهم .
دلیل شماره 2: مشکل در شناسایی محدوده ها
دومین دلیلی که می تواند باعث بروز این خطا شود مربوط به استفاده از محدوده های در کدهای وی بی ای است .
فرض کنید که یک محدوده از سلول های یک شیت کاری در اکسل را نام گذاری کرده اید .
حالا می خواهید از همین محدوده در داخل کدهای خودتان استفاده کنید . به عنوان مثال به تصویر زیر نگاه کنید .
من اینجا محدوده سلول های A1 تا A10 را انتخاب کرده و اسم آنها را myrange قرار داده ام . حالا با استفاده از کد نویسی وی بی ای از اکسل می خواهم که رنگ پس زمینه سلول های این محدوده را به رنگ زرد دربیاورد .
برای این کار از کدهای زیر استفاده می کنم .
Sub changecolor()
Range("myrang").Interior.Color = vbYellow
End Sub
فکر می کنید با اجرای این خط کد ساده چه اتفاقی می افتد ؟ من به شما بگویم که اجرای کدهای بالا نتیجه ای را که در تصویر زیر می بینید به دنبال خواهد داشت .
اینجا اکسل یک پیغام واضح به ما می دهد و آن هم این است که ما در کدهایمان از یک برنامه کاربردی یا یک شی ( که اینجا شــی یا Object مورد نظرمان همان محدوده تعریف شده در اکسل است) استفاده کرده ایم اما یک جای کار ایراد دارد .
اشکال کار من هم در این بود که در داخل اکسل محدوده مورد نظرم را به صورت myrange تعریف کرده ام اما در داخل کدها این محدوده را به صورت myrang ( یعنی بدون حرف e در آخر این عبارت ) استفاده کرده ام .
همین باعث بروز خطای 1004 می شود .
این هم از دومین دلیل بروز خطای Run time error 1004 در برنامه نویسی وی بی ای .
در ضمن ویدئوی این بخش را می توانید در سافت پلاس تی وی مشاهده کنید .
مطالب زیر را حتما مطالعه کنید
ذخیره نمودارها با کدهای VBAبصورت تصویر+راهنمای گام به گام
لیست باکس ها در برنامه نویسی VBA ؛ تمام چیزی که باید بدانید .
۷ اشتباه در کدنویسی VBA که ممکن است شما هم مرتکب شوید ؟
توی این آموزش راجع به اشتباهاتی که ممکن است در برنامه نویسی VBA مرتکب آنها شوید صحبت می کنیم .
چطور با کدهای VBA اطلاعات را از اکسس به ورد بفرستیم؟
کلمه کلیدی set و کاربردهای آن در برنامه نویسی VBA
به کمک VBA بر رنگها در اکسل حکومت کنید .
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام خسته نباشید. ممنون از اموزش های مفیدتون.
برای کار با ورد در اکسل word library رو از قسمت refernce اضافه می کنم.
ولی وقتی اکسل رو در یک سیستمی که دارای اکسل ورژن بالاتر هست اجرا میکنم با خطای missing library مواجهه میشم که مجبورم دوباره به قسمت refernce مراجعه کنم تیک missing رو بردارم و ورژن پایین تر رو انتخاب کنم.
آیا راهکاری برای حل خودکار این مشکل وجود داره؟؟؟